Implement split and join multi-value cells features.

Reorganized column header popup menu.


git-svn-id: http://google-refine.googlecode.com/svn/trunk@44 7d457c2a-affb-35e4-300a-418c747d4874
This commit is contained in:
David Huynh 2010-02-05 06:29:27 +00:00
parent 62c8c72dc4
commit 937d91ab1d
11 changed files with 485 additions and 16 deletions

View File

@ -18,7 +18,9 @@ import com.metaweb.gridworks.commands.Command;
import com.metaweb.gridworks.commands.edit.AddColumnCommand; import com.metaweb.gridworks.commands.edit.AddColumnCommand;
import com.metaweb.gridworks.commands.edit.CreateProjectFromUploadCommand; import com.metaweb.gridworks.commands.edit.CreateProjectFromUploadCommand;
import com.metaweb.gridworks.commands.edit.DoTextTransformCommand; import com.metaweb.gridworks.commands.edit.DoTextTransformCommand;
import com.metaweb.gridworks.commands.edit.JoinMultiValueCellsCommand;
import com.metaweb.gridworks.commands.edit.RemoveColumnCommand; import com.metaweb.gridworks.commands.edit.RemoveColumnCommand;
import com.metaweb.gridworks.commands.edit.SplitMultiValueCellsCommand;
import com.metaweb.gridworks.commands.edit.UndoRedoCommand; import com.metaweb.gridworks.commands.edit.UndoRedoCommand;
import com.metaweb.gridworks.commands.info.ComputeFacetsCommand; import com.metaweb.gridworks.commands.info.ComputeFacetsCommand;
import com.metaweb.gridworks.commands.info.ExportRowsCommand; import com.metaweb.gridworks.commands.info.ExportRowsCommand;
@ -57,6 +59,8 @@ public class GridworksServlet extends HttpServlet {
_commands.put("add-column", new AddColumnCommand()); _commands.put("add-column", new AddColumnCommand());
_commands.put("remove-column", new RemoveColumnCommand()); _commands.put("remove-column", new RemoveColumnCommand());
_commands.put("join-multi-value-cells", new JoinMultiValueCellsCommand());
_commands.put("split-multi-value-cells", new SplitMultiValueCellsCommand());
_commands.put("reconcile", new ReconcileCommand()); _commands.put("reconcile", new ReconcileCommand());
_commands.put("approve-reconcile", new ApproveReconcileCommand()); _commands.put("approve-reconcile", new ApproveReconcileCommand());

View File

@ -0,0 +1,39 @@
package com.metaweb.gridworks.commands.edit;
import java.io.IOException;
import java.util.Properties;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.metaweb.gridworks.commands.Command;
import com.metaweb.gridworks.model.AbstractOperation;
import com.metaweb.gridworks.model.Project;
import com.metaweb.gridworks.model.operations.MultiValueCellJoinOperation;
import com.metaweb.gridworks.process.Process;
public class JoinMultiValueCellsCommand extends Command {
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
Project project = getProject(request);
int cellIndex = Integer.parseInt(request.getParameter("cellIndex"));
int keyCellIndex = Integer.parseInt(request.getParameter("keyCellIndex"));
String separator = request.getParameter("separator");
AbstractOperation op = new MultiValueCellJoinOperation(cellIndex, keyCellIndex, separator);
Process process = op.createProcess(project, new Properties());
boolean done = project.processManager.queueProcess(process);
respond(response, "{ \"code\" : " + (done ? "\"ok\"" : "\"pending\"") + " }");
} catch (Exception e) {
respondException(response, e);
}
}
}

View File

@ -0,0 +1,40 @@
package com.metaweb.gridworks.commands.edit;
import java.io.IOException;
import java.util.Properties;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.metaweb.gridworks.commands.Command;
import com.metaweb.gridworks.model.AbstractOperation;
import com.metaweb.gridworks.model.Project;
import com.metaweb.gridworks.model.operations.MultiValueCellSplitOperation;
import com.metaweb.gridworks.process.Process;
public class SplitMultiValueCellsCommand extends Command {
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
Project project = getProject(request);
int cellIndex = Integer.parseInt(request.getParameter("cellIndex"));
int keyCellIndex = Integer.parseInt(request.getParameter("keyCellIndex"));
String separator = request.getParameter("separator");
String mode = request.getParameter("mode");
AbstractOperation op = new MultiValueCellSplitOperation(cellIndex, keyCellIndex, separator, mode);
Process process = op.createProcess(project, new Properties());
boolean done = project.processManager.queueProcess(process);
respond(response, "{ \"code\" : " + (done ? "\"ok\"" : "\"pending\"") + " }");
} catch (Exception e) {
respondException(response, e);
}
}
}

View File

@ -14,9 +14,9 @@ import com.metaweb.gridworks.expr.HasFields;
public class Row implements Serializable, HasFields, Jsonizable { public class Row implements Serializable, HasFields, Jsonizable {
private static final long serialVersionUID = -689264211730915507L; private static final long serialVersionUID = -689264211730915507L;
public boolean flagged; public boolean flagged;
public boolean starred; public boolean starred;
final public List<Cell> cells; final public List<Cell> cells;
transient public List<Integer> contextRows; transient public List<Integer> contextRows;
transient public List<Integer> contextCells; transient public List<Integer> contextCells;
@ -25,6 +25,14 @@ public class Row implements Serializable, HasFields, Jsonizable {
cells = new ArrayList<Cell>(cellCount); cells = new ArrayList<Cell>(cellCount);
} }
public Row dup() {
Row row = new Row(cells.size());
row.flagged = flagged;
row.starred = starred;
row.cells.addAll(cells);
return row;
}
@Override @Override
public Object getField(String name, Properties bindings) { public Object getField(String name, Properties bindings) {
if ("flagged".equals(name)) { if ("flagged".equals(name)) {
@ -37,6 +45,41 @@ public class Row implements Serializable, HasFields, Jsonizable {
return null; return null;
} }
public boolean isEmpty() {
for (Cell cell : cells) {
if (cell != null && cell.value != null && !isValueBlank(cell.value)) {
return false;
}
}
return true;
}
public Cell getCell(int cellIndex) {
if (cellIndex < cells.size()) {
return cells.get(cellIndex);
} else {
return null;
}
}
public Object getCellValue(int cellIndex) {
if (cellIndex < cells.size()) {
Cell cell = cells.get(cellIndex);
if (cell != null) {
return cell.value;
}
}
return null;
}
public boolean isCellBlank(int cellIndex) {
return isValueBlank(getCellValue(cellIndex));
}
protected boolean isValueBlank(Object value) {
return value == null || !(value instanceof String) || ((String) value).trim().isEmpty();
}
public void setCell(int cellIndex, Cell cell) { public void setCell(int cellIndex, Cell cell) {
if (cellIndex < cells.size()) { if (cellIndex < cells.size()) {
cells.set(cellIndex, cell); cells.set(cellIndex, cell);

View File

@ -0,0 +1,37 @@
package com.metaweb.gridworks.model.changes;
import java.util.ArrayList;
import java.util.List;
import com.metaweb.gridworks.history.Change;
import com.metaweb.gridworks.model.Project;
import com.metaweb.gridworks.model.Row;
public class MassRowChange implements Change {
private static final long serialVersionUID = 5640738656190790569L;
final protected List<Row> _newRows;
protected List<Row> _oldRows;
public MassRowChange(List<Row> newRows) {
_newRows = newRows;
}
@Override
public void apply(Project project) {
synchronized (project) {
_oldRows = new ArrayList<Row>(project.rows);
project.rows.clear();
project.rows.addAll(_newRows);
}
}
@Override
public void revert(Project project) {
synchronized (project) {
project.rows.clear();
project.rows.addAll(_oldRows);
}
}
}

View File

@ -9,7 +9,9 @@ import com.metaweb.gridworks.model.Project;
import com.metaweb.gridworks.util.ParsingUtilities; import com.metaweb.gridworks.util.ParsingUtilities;
abstract public class EngineDependentOperation implements AbstractOperation { abstract public class EngineDependentOperation implements AbstractOperation {
final private String _engineConfigString; private static final long serialVersionUID = -2800091595856881731L;
final private String _engineConfigString;
transient protected JSONObject _engineConfig; transient protected JSONObject _engineConfig;

View File

@ -0,0 +1,110 @@
package com.metaweb.gridworks.model.operations;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import org.json.JSONException;
import org.json.JSONWriter;
import com.metaweb.gridworks.history.Change;
import com.metaweb.gridworks.history.HistoryEntry;
import com.metaweb.gridworks.model.AbstractOperation;
import com.metaweb.gridworks.model.Cell;
import com.metaweb.gridworks.model.Column;
import com.metaweb.gridworks.model.Project;
import com.metaweb.gridworks.model.Row;
import com.metaweb.gridworks.model.changes.MassRowChange;
import com.metaweb.gridworks.process.Process;
import com.metaweb.gridworks.process.QuickHistoryEntryProcess;
public class MultiValueCellJoinOperation implements AbstractOperation {
private static final long serialVersionUID = 3134524625206033285L;
final protected int _cellIndex;
final protected int _keyCellIndex;
final protected String _separator;
public MultiValueCellJoinOperation(
int cellIndex,
int keyCellIndex,
String separator
) {
_cellIndex = cellIndex;
_keyCellIndex = keyCellIndex;
_separator = separator;
}
@Override
public Process createProcess(Project project, Properties options)
throws Exception {
Column column = project.columnModel.columns.get(_cellIndex);
if (column == null) {
throw new Exception("No column corresponding to cell index " + _cellIndex);
}
List<Row> newRows = new ArrayList<Row>();
int oldRowCount = project.rows.size();
for (int r = 0; r < oldRowCount; r++) {
Row oldRow = project.rows.get(r);
if (oldRow.isCellBlank(_keyCellIndex)) {
newRows.add(oldRow.dup());
continue;
}
int r2 = r + 1;
while (r2 < oldRowCount && project.rows.get(r2).isCellBlank(_keyCellIndex)) {
r2++;
}
if (r2 == r + 1) {
newRows.add(oldRow.dup());
continue;
}
StringBuffer sb = new StringBuffer();
for (int r3 = r; r3 < r2; r3++) {
Object value = project.rows.get(r3).getCellValue(_cellIndex);
if (value != null) {
if (sb.length() > 0) {
sb.append(_separator);
}
sb.append(value.toString());
}
}
for (int r3 = r; r3 < r2; r3++) {
Row newRow = project.rows.get(r3).dup();
if (r3 == r) {
newRow.setCell(_cellIndex, new Cell(sb.toString(), null));
} else {
newRow.setCell(_cellIndex, null);
}
if (!newRow.isEmpty()) {
newRows.add(newRow);
}
}
r = r2 - 1; // r will be incremented by the for loop anyway
}
String description = "Join multi-value cells in column " + column.getHeaderLabel();
Change change = new MassRowChange(newRows);
HistoryEntry historyEntry = new HistoryEntry(
project, description, this, change);
return new QuickHistoryEntryProcess(project, historyEntry);
}
@Override
public void write(JSONWriter writer, Properties options)
throws JSONException {
// TODO Auto-generated method stub
}
}

View File

@ -0,0 +1,126 @@
package com.metaweb.gridworks.model.operations;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import org.apache.commons.lang.StringUtils;
import org.json.JSONException;
import org.json.JSONWriter;
import com.metaweb.gridworks.history.Change;
import com.metaweb.gridworks.history.HistoryEntry;
import com.metaweb.gridworks.model.AbstractOperation;
import com.metaweb.gridworks.model.Cell;
import com.metaweb.gridworks.model.Column;
import com.metaweb.gridworks.model.Project;
import com.metaweb.gridworks.model.Row;
import com.metaweb.gridworks.model.changes.MassRowChange;
import com.metaweb.gridworks.process.Process;
import com.metaweb.gridworks.process.QuickHistoryEntryProcess;
public class MultiValueCellSplitOperation implements AbstractOperation {
private static final long serialVersionUID = 8217930220439070322L;
final protected int _cellIndex;
final protected int _keyCellIndex;
final protected String _separator;
final protected String _mode;
public MultiValueCellSplitOperation(
int cellIndex,
int keyCellIndex,
String separator,
String mode
) {
_cellIndex = cellIndex;
_keyCellIndex = keyCellIndex;
_separator = separator;
_mode = mode;
}
@Override
public Process createProcess(Project project, Properties options)
throws Exception {
Column column = project.columnModel.columns.get(_cellIndex);
if (column == null) {
throw new Exception("No column corresponding to cell index " + _cellIndex);
}
List<Row> newRows = new ArrayList<Row>();
int oldRowCount = project.rows.size();
for (int r = 0; r < oldRowCount; r++) {
Row oldRow = project.rows.get(r);
if (oldRow.isCellBlank(_cellIndex)) {
newRows.add(oldRow.dup());
continue;
}
Object value = oldRow.getCellValue(_cellIndex);
String s = value instanceof String ? ((String) value) : value.toString();
String[] values = null;
if (_mode.equals("regex")) {
values = s.split(_separator);
} else {
values = StringUtils.splitByWholeSeparator(s, _separator);
}
if (values.length < 2) {
newRows.add(oldRow.dup());
continue;
}
// First value goes into the same row
{
Row firstNewRow = oldRow.dup();
firstNewRow.setCell(_cellIndex, new Cell(values[0].trim(), null));
newRows.add(firstNewRow);
}
int r2 = r + 1;
for (int v = 1; v < values.length; v++) {
Cell newCell = new Cell(values[v].trim(), null);
if (r2 < project.rows.size()) {
Row oldRow2 = project.rows.get(r2);
if (oldRow2.isCellBlank(_cellIndex) &&
oldRow2.isCellBlank(_keyCellIndex)) {
Row newRow = oldRow2.dup();
newRow.setCell(_cellIndex, newCell);
newRows.add(newRow);
r2++;
continue;
}
}
Row newRow = new Row(_cellIndex + 1);
newRow.setCell(_cellIndex, newCell);
newRows.add(newRow);
}
r = r2 - 1; // r will be incremented by the for loop anyway
}
String description = "Split multi-value cells in column " + column.getHeaderLabel();
Change change = new MassRowChange(newRows);
HistoryEntry historyEntry = new HistoryEntry(
project, description, this, change);
return new QuickHistoryEntryProcess(project, historyEntry);
}
@Override
public void write(JSONWriter writer, Properties options)
throws JSONException {
// TODO Auto-generated method stub
}
}

View File

@ -525,7 +525,7 @@ DataTableView.prototype._createMenuForColumnHeader = function(column, index, elm
] ]
}, },
{ {
label: "Collapse/Expand", label: "View",
tooltip: "Collapse/expand columns to make viewing the data more convenient", tooltip: "Collapse/expand columns to make viewing the data more convenient",
submenu: [ submenu: [
{ {
@ -559,17 +559,18 @@ DataTableView.prototype._createMenuForColumnHeader = function(column, index, elm
}, },
{}, {},
{ {
label: "Add Column Based on This Column", label: "Edit",
click: function() { self._doAddColumn(column, index, "value"); }
},
{
label: "Remove This Column",
click: function() { self._doRemoveColumn(column, index); }
},
{},
{
label: "Text Transform",
submenu: [ submenu: [
{ "heading" : "Column Operations" },
{
label: "Add Column Based on This Column",
click: function() { self._doAddColumn(column, index, "value"); }
},
{
label: "Remove This Column",
click: function() { self._doRemoveColumn(column, index); }
},
{ "heading" : "Cell Content Transformations" },
{ {
label: "To Titlecase", label: "To Titlecase",
click: function() { self._doTextTransform(column, "toTitlecase(value)"); } click: function() { self._doTextTransform(column, "toTitlecase(value)"); }
@ -586,6 +587,15 @@ DataTableView.prototype._createMenuForColumnHeader = function(column, index, elm
{ {
label: "Custom Expression ...", label: "Custom Expression ...",
click: function() { self._doTextTransformPrompt(column); } click: function() { self._doTextTransformPrompt(column); }
},
{ "heading" : "Advanced Transformations" },
{
label: "Join Multi-Value Cells ...",
click: function() { self._doJoinMultiValueCells(column); }
},
{
label: "Split Multi-Value Cells ...",
click: function() { self._doSplitMultiValueCells(column); }
} }
] ]
}, },
@ -624,7 +634,7 @@ DataTableView.prototype._createMenuForColumnHeader = function(column, index, elm
} }
] ]
} }
], elmt); ], elmt, { width: "120px", horizontal: false });
}; };
DataTableView.prototype._doFilterByExpressionPrompt = function(column, expression) { DataTableView.prototype._doFilterByExpressionPrompt = function(column, expression) {
@ -781,6 +791,35 @@ DataTableView.prototype._doRemoveColumn = function(column, index) {
); );
}; };
DataTableView.prototype._doJoinMultiValueCells = function(column) {
var separator = window.prompt("Enter separator to use between values", ", ");
if (separator != null) {
this._doPostThenUpdate(
"join-multi-value-cells",
{
cellIndex: column.cellIndex,
keyCellIndex: theProject.columnModel.keyCellIndex,
separator: separator
}
);
}
};
DataTableView.prototype._doSplitMultiValueCells = function(column) {
var separator = window.prompt("What separator currently separates the values?", ", ");
if (separator != null) {
this._doPostThenUpdate(
"split-multi-value-cells",
{
cellIndex: column.cellIndex,
keyCellIndex: theProject.columnModel.keyCellIndex,
separator: separator,
mode: "plain"
}
);
}
};
DataTableView.prototype._doExportRows = function() { DataTableView.prototype._doExportRows = function() {
var form = document.createElement("form"); var form = document.createElement("form");
$(form) $(form)

View File

@ -67,6 +67,10 @@ MenuSystem.createAndShowStandardMenu = function(items, elmt, options) {
}; };
var menu = MenuSystem.createMenu(); var menu = MenuSystem.createMenu();
if ("width" in options) {
menu.width(options.width);
}
var createMenuItem = function(item) { var createMenuItem = function(item) {
if ("label" in item) { if ("label" in item) {
var menuItem = MenuSystem.createMenuItem().appendTo(menu); var menuItem = MenuSystem.createMenuItem().appendTo(menu);

View File

@ -0,0 +1,25 @@
name Directed by Performances - Actor Performances - Character Estimated budget - Currency Estimated budget - Amount Genres Initial release date Languages
Wayne's World Penelope Spheeris Mike Myers, Dana Carvey, Rob Lowe, Tia Carrere, Lara Flynn Boyle, Chris Farley, Ed O'Neill, Robert Patrick, Alice Cooper Wayne Campbell, Garth Algar, Stacy US$ 20000000 Comedy, Satire, Buddy film 2/14/1992 English Language
Wayne's World 2 Stephen Surjik Mike Myers, Dana Carvey, Christopher Walken, Tia Carrere, Chris Farley, Ted McGinley, Olivia d'Abo, Kevin Pollak, Ed O'Neill, Kim Basinger, Heather Locklear Wayne Campbell, Garth Algar Comedy, Buddy film 12/10/1993 English Language
Austin Powers: Goldmember Jay Roach Mike Myers, BeyoncÈ, Seth Green, Michael York, Robert Wagner, Michael Caine, Verne Troyer, Gwyneth Paltrow, Fred Savage, Aaron Himelstein, Mindy Sterling, Josh Zuckerman, Greg Grunberg, Tommy 'Tiny' Lister, Rob Lowe, Masi Oka, Nikki Schieler Ziering, Britney Spears, Tom Cruise, John Travolta, Danny DeVito, Katie Couric, Steven Spielberg Austin Powers, Foxxy Cleopatra, Scott Evil, Dixie Normous, Him/Herself, Prison Guard Parody, Time travel, Comedy 7/26/2002 English Language
Austin Powers: International Man of Mystery Jay Roach Mike Myers, Elizabeth Hurley, Michael York, Mimi Rogers, Robert Wagner, Patrick Bristow, Fabiana Udenio, Elya Baskin, Paul Dillon, Lois Chiles, Christian Slater, Brian George, Cynthia Lamontagne, Cindy Margolis, Mindy Sterling, Joe Son Austin Powers, Fembot Parody, Time travel, Comedy 5/2/1997 English Language
So I Married an Axe Murderer Thomas Schlamme Mike Myers, Nancy Travis, Anthony LaPaglia, Amanda Plummer, Brenda Fricker, Michael G. Hagerty, Luenell, Debi Mazar, Matt Doherty, Steven Wright, Charles Grodin, Patrick Bristow, Phil Hartman, Cintra Wilson, Michael Richards, Sheila Kelley, Alan Arkin, M. C. Brennan, Holly Lewis Police Records Officer Comedy 7/30/1993 English Language
Austin Powers: The Spy Who Shagged Me Jay Roach, Mike Myers, Heather Graham, Robert Wagner, Rob Lowe, Michael York, Verne Troyer, David Koechner, Muse Watson, Michael G. Hagerty, Kristen Johnston, Mindy Sterling, Gia Carides, Will Ferrell, Bree Turner, Scott Cooper Austin Powers, Parody, Comedy, Time travel 6/11/1999 English Language
German Language
Shrek 2 Andrew Adamson, Kelly Asbury, Conrad Vernon John Lithgow, Mike Myers, Eddie Murphy, Cameron Diaz, Julie Andrews, Antonio Banderas, John Cleese, Rupert Everett, Jennifer Saunders, Aron Warner, Kelly Asbury, Cody Cameron, Conrad Vernon, Christopher Knights, Mark Moseley Lord Farquaad, Shrek, Donkey, Princess Fiona, Queen, Puss in Boots, King, Prince Charming, Fairy Godmother, Wolf, Page, Pinocchio, Gingerbread Man, Blind Mouse, Mirror US$ 125000000 Comedy, Computer animation, Fantasy 5/19/2004 English Language
Inglourious Basterds Quentin Tarantino, , , , Mark Christopher Brad Pitt, Mike Myers, Diane Kruger, Daniel Br¸hl, Til Schweiger, B. J. Novak, Michael Fassbender, Julie Dreyfus, Maggie Cheung, Rod Taylor, Gedeon Burkhard, Christian Berkel, Samuel L. Jackson, Samm Levine, Cloris Leachman, Christoph Waltz, Ludger Pistor, Omar Doom, Jana Pallaske, Enzo G. Castellari, Jacky Ido, Eli Roth, MÈlanie Laurent, Ryan Phillippe, Salma Hayek, Neve Campbell, Mike Myers, Sela Ward, Breckin Meyer, Sherry Stringfield, Ellen Albertini Dow, Cameron Mathison, Noam Jenkins, Jay Goede, Patrick Taylor, Heather Matarazzo, Heidi Klum, Mark Ruffalo, Lauren Hutton, Skipp Sudduth, Michael York Lt. Aldo Raine, General Ed French, Bridget von Hammersmark, Frederick Zoller, Sgt. Hugo Stiglitz, PFC Utivich, Lt. Archie Hicox, Francesca Mondino, Madame Mimieux, Winston Churchhill, Eric the Barkeeper, PFC Hirschberg, Mrs. Himmelstein, Colonel Hans Landa, PFC Omar Ulmer, Shane O'Shea, Anita Randazzo, Julie Black, Steve Rubell, Billie Auster, Greg Randazzo, Viv, Disco Dottie, Atlanta, Romeo, Buck, Tarzan, Grace O'Shea, VIP Patron US$ 70000000 War, Adventure, Action, Black comedy, LGBT, Drama 8/21/2009 English Language
German Language
French Language
Italian Language
54 US$ 18000000 8/28/1998 English Language
Shrek the Third Raman Hui, Chris Miller, Raman Hui Mike Myers, Cameron Diaz, Eddie Murphy, Antonio Banderas, Julie Andrews, John Cleese, Rupert Everett, Justin Timberlake, Regis Philbin, Seth Rogen, Eric Idle, Cheri Oteri, Edison Chen Shrek, Princess Fiona, , Artie, Ship Captain Comedy, Computer animation, Fantasy 5/18/2007 English Language
View from the Top Bruno Barreto Gwyneth Paltrow, Christina Applegate, Mark Ruffalo, Candice Bergen, Joshua Malina, Kelly Preston, Mike Myers, Rob Lowe, Marc Blucas Donna Jensen Romantic comedy, Comedy 3/21/2003 English Language
Pete's Meteor Brenda Fricker, Mike Myers Drama 1998
The Cat in the Hat Bo Welch Mike Myers, Alec Baldwin, Kelly Preston, Dakota Fanning, Spencer Breslin, Amy Hill, Sean Hayes The Cat in the Hat, Larry Quinn, Joan Walden, Sally Walden, Conrad Walden, The Fish US$ 109000000 Musical, Fantasy 11/21/2003 English Language
Shrek Andrew Adamson, Vicky Jenson Mike Myers, Eddie Murphy, Cameron Diaz, John Lithgow, Chris Farley, Conrad Vernon, Vincent Cassel, Val Bettin, Christopher Knights Shrek, Donkey, Princess Fiona, Lord Farquaad US$ 60000000 Parody, Computer animation, Comedy, Fantasy 5/18/2001 English Language
The Thin Pink Line Joe Dietl, Michael Irpino Laura Kightlinger, Janeane Garofalo, Margaret Cho, Jennifer Aniston, David Schwimmer, Mike Myers, Will Ferrell Joyce Wintergarden-Dingle, Clove Satire, Indie, Comedy 1998 English Language
Shrek the Halls Gary Trousdale Eddie Murphy, Antonio Banderas, Cameron Diaz, Mike Myers, Aron Warner, Conrad Vernon, Christopher Knights, Marissa Jaret Winokur Princess Fiona Animation, Fantasy, Short film, Adventure, Comedy 11/28/2007 English Language
Shrek Ever After Mike Mitchell, Mike Mitchell Cameron Diaz, Eric Idle, Antonio Banderas, Eddie Murphy, Justin Timberlake, Julie Andrews, Mike Myers, Paul McCartney, Larry King Princess Fiona, Merlin, Puss in Boots, Donkey, Arthur Pendragon, Queen Lillian, Shrek, Rumpelstiltskin, Doris the Ugly Stepsister Comedy, Computer animation, Fantasy 5/21/2010 English Language
The Love Guru Mike Myers, Jessica Alba, Justin Timberlake, Romany Malco, Jessica Simpson, Ben Kingsley, Verne Troyer Maurice Pitka, Jane Bullard, Jacques Grande, Darren Roanoke US$ 62000000 Comedy 6/20/2008 English Language
Shrek Goes Fourth Cameron Diaz, Antonio Banderas, Eddie Murphy, Mike Myers Princess Fiona, Puss in Boots, Donkey, Shrek Computer animation
View from the top Bruno Barreto Gwyneth Paltrow, Mike Myers, Rob Lowe, Christina Applegate, Kelly Preston, Candice Bergen, Mark Ruffalo, Joshua Malina Romantic comedy 3/21/2003 English Language
1 name Directed by Performances - Actor Performances - Character Estimated budget - Currency Estimated budget - Amount Genres Initial release date Languages
2 Wayne's World Penelope Spheeris Mike Myers, Dana Carvey, Rob Lowe, Tia Carrere, Lara Flynn Boyle, Chris Farley, Ed O'Neill, Robert Patrick, Alice Cooper Wayne Campbell, Garth Algar, Stacy US$ 20000000 Comedy, Satire, Buddy film 2/14/1992 English Language
3 Wayne's World 2 Stephen Surjik Mike Myers, Dana Carvey, Christopher Walken, Tia Carrere, Chris Farley, Ted McGinley, Olivia d'Abo, Kevin Pollak, Ed O'Neill, Kim Basinger, Heather Locklear Wayne Campbell, Garth Algar Comedy, Buddy film 12/10/1993 English Language
4 Austin Powers: Goldmember Jay Roach Mike Myers, BeyoncÈ, Seth Green, Michael York, Robert Wagner, Michael Caine, Verne Troyer, Gwyneth Paltrow, Fred Savage, Aaron Himelstein, Mindy Sterling, Josh Zuckerman, Greg Grunberg, Tommy 'Tiny' Lister, Rob Lowe, Masi Oka, Nikki Schieler Ziering, Britney Spears, Tom Cruise, John Travolta, Danny DeVito, Katie Couric, Steven Spielberg Austin Powers, Foxxy Cleopatra, Scott Evil, Dixie Normous, Him/Herself, Prison Guard Parody, Time travel, Comedy 7/26/2002 English Language
5 Austin Powers: International Man of Mystery Jay Roach Mike Myers, Elizabeth Hurley, Michael York, Mimi Rogers, Robert Wagner, Patrick Bristow, Fabiana Udenio, Elya Baskin, Paul Dillon, Lois Chiles, Christian Slater, Brian George, Cynthia Lamontagne, Cindy Margolis, Mindy Sterling, Joe Son Austin Powers, Fembot Parody, Time travel, Comedy 5/2/1997 English Language
6 So I Married an Axe Murderer Thomas Schlamme Mike Myers, Nancy Travis, Anthony LaPaglia, Amanda Plummer, Brenda Fricker, Michael G. Hagerty, Luenell, Debi Mazar, Matt Doherty, Steven Wright, Charles Grodin, Patrick Bristow, Phil Hartman, Cintra Wilson, Michael Richards, Sheila Kelley, Alan Arkin, M. C. Brennan, Holly Lewis Police Records Officer Comedy 7/30/1993 English Language
7 Austin Powers: The Spy Who Shagged Me Jay Roach, Mike Myers, Heather Graham, Robert Wagner, Rob Lowe, Michael York, Verne Troyer, David Koechner, Muse Watson, Michael G. Hagerty, Kristen Johnston, Mindy Sterling, Gia Carides, Will Ferrell, Bree Turner, Scott Cooper Austin Powers, Parody, Comedy, Time travel 6/11/1999 English Language
8 German Language
9 Shrek 2 Andrew Adamson, Kelly Asbury, Conrad Vernon John Lithgow, Mike Myers, Eddie Murphy, Cameron Diaz, Julie Andrews, Antonio Banderas, John Cleese, Rupert Everett, Jennifer Saunders, Aron Warner, Kelly Asbury, Cody Cameron, Conrad Vernon, Christopher Knights, Mark Moseley Lord Farquaad, Shrek, Donkey, Princess Fiona, Queen, Puss in Boots, King, Prince Charming, Fairy Godmother, Wolf, Page, Pinocchio, Gingerbread Man, Blind Mouse, Mirror US$ 125000000 Comedy, Computer animation, Fantasy 5/19/2004 English Language
10 Inglourious Basterds Quentin Tarantino, , , , Mark Christopher Brad Pitt, Mike Myers, Diane Kruger, Daniel Br¸hl, Til Schweiger, B. J. Novak, Michael Fassbender, Julie Dreyfus, Maggie Cheung, Rod Taylor, Gedeon Burkhard, Christian Berkel, Samuel L. Jackson, Samm Levine, Cloris Leachman, Christoph Waltz, Ludger Pistor, Omar Doom, Jana Pallaske, Enzo G. Castellari, Jacky Ido, Eli Roth, MÈlanie Laurent, Ryan Phillippe, Salma Hayek, Neve Campbell, Mike Myers, Sela Ward, Breckin Meyer, Sherry Stringfield, Ellen Albertini Dow, Cameron Mathison, Noam Jenkins, Jay Goede, Patrick Taylor, Heather Matarazzo, Heidi Klum, Mark Ruffalo, Lauren Hutton, Skipp Sudduth, Michael York Lt. Aldo Raine, General Ed French, Bridget von Hammersmark, Frederick Zoller, Sgt. Hugo Stiglitz, PFC Utivich, Lt. Archie Hicox, Francesca Mondino, Madame Mimieux, Winston Churchhill, Eric the Barkeeper, PFC Hirschberg, Mrs. Himmelstein, Colonel Hans Landa, PFC Omar Ulmer, Shane O'Shea, Anita Randazzo, Julie Black, Steve Rubell, Billie Auster, Greg Randazzo, Viv, Disco Dottie, Atlanta, Romeo, Buck, Tarzan, Grace O'Shea, VIP Patron US$ 70000000 War, Adventure, Action, Black comedy, LGBT, Drama 8/21/2009 English Language
11 German Language
12 French Language
13 Italian Language
14 54 US$ 18000000 8/28/1998 English Language
15 Shrek the Third Raman Hui, Chris Miller, Raman Hui Mike Myers, Cameron Diaz, Eddie Murphy, Antonio Banderas, Julie Andrews, John Cleese, Rupert Everett, Justin Timberlake, Regis Philbin, Seth Rogen, Eric Idle, Cheri Oteri, Edison Chen Shrek, Princess Fiona, , Artie, Ship Captain Comedy, Computer animation, Fantasy 5/18/2007 English Language
16 View from the Top Bruno Barreto Gwyneth Paltrow, Christina Applegate, Mark Ruffalo, Candice Bergen, Joshua Malina, Kelly Preston, Mike Myers, Rob Lowe, Marc Blucas Donna Jensen Romantic comedy, Comedy 3/21/2003 English Language
17 Pete's Meteor Brenda Fricker, Mike Myers Drama 1998
18 The Cat in the Hat Bo Welch Mike Myers, Alec Baldwin, Kelly Preston, Dakota Fanning, Spencer Breslin, Amy Hill, Sean Hayes The Cat in the Hat, Larry Quinn, Joan Walden, Sally Walden, Conrad Walden, The Fish US$ 109000000 Musical, Fantasy 11/21/2003 English Language
19 Shrek Andrew Adamson, Vicky Jenson Mike Myers, Eddie Murphy, Cameron Diaz, John Lithgow, Chris Farley, Conrad Vernon, Vincent Cassel, Val Bettin, Christopher Knights Shrek, Donkey, Princess Fiona, Lord Farquaad US$ 60000000 Parody, Computer animation, Comedy, Fantasy 5/18/2001 English Language
20 The Thin Pink Line Joe Dietl, Michael Irpino Laura Kightlinger, Janeane Garofalo, Margaret Cho, Jennifer Aniston, David Schwimmer, Mike Myers, Will Ferrell Joyce Wintergarden-Dingle, Clove Satire, Indie, Comedy 1998 English Language
21 Shrek the Halls Gary Trousdale Eddie Murphy, Antonio Banderas, Cameron Diaz, Mike Myers, Aron Warner, Conrad Vernon, Christopher Knights, Marissa Jaret Winokur Princess Fiona Animation, Fantasy, Short film, Adventure, Comedy 11/28/2007 English Language
22 Shrek Ever After Mike Mitchell, Mike Mitchell Cameron Diaz, Eric Idle, Antonio Banderas, Eddie Murphy, Justin Timberlake, Julie Andrews, Mike Myers, Paul McCartney, Larry King Princess Fiona, Merlin, Puss in Boots, Donkey, Arthur Pendragon, Queen Lillian, Shrek, Rumpelstiltskin, Doris the Ugly Stepsister Comedy, Computer animation, Fantasy 5/21/2010 English Language
23 The Love Guru Mike Myers, Jessica Alba, Justin Timberlake, Romany Malco, Jessica Simpson, Ben Kingsley, Verne Troyer Maurice Pitka, Jane Bullard, Jacques Grande, Darren Roanoke US$ 62000000 Comedy 6/20/2008 English Language
24 Shrek Goes Fourth Cameron Diaz, Antonio Banderas, Eddie Murphy, Mike Myers Princess Fiona, Puss in Boots, Donkey, Shrek Computer animation
25 View from the top Bruno Barreto Gwyneth Paltrow, Mike Myers, Rob Lowe, Christina Applegate, Kelly Preston, Candice Bergen, Mark Ruffalo, Joshua Malina Romantic comedy 3/21/2003 English Language