$(function() { Ox.theme("modern"); var $body = $("body"), $document = $(document), app = new Ox.App({ // requestURL: "http://blackbook.local:8000/api/" requestURL: "http://lion.oil21.org:8000/api/" }), groups = [ { id: "director", title: "Director" }, { id: "country", title: "Country" }, { id: "year", title: "Year" }, /* { id: "language", title: "Language" }, { id: "genre", title: "Genre" } */ ], $group = [], elements = [], rightPanelWidth = $document.width() - 256; $.each(groups, function(i, v) { var size = rightPanelWidth / 3 + (rightPanelWidth % 3 > i); $group[i] = new Ox.TextList({ columns: [ { align: "left", id: "name", operator: v.id == "year" ? "-" : "+", title: v.title, unique: true, visible: true, width: size - 60 - ($.browser.mozilla ? 16 : 12) }, { align: "right", id: "items", operator: "-", title: "Items", visible: true, width: 60 } ], id: "group_" + v.id, request: function(options) { delete options.keys; app.request("find", $.extend(options, { group: v.id, query: { conditions: [ { key: "director", value: "", operator: "" } ], operator: "" } }), options.callback); }, sort: [ { key: "name", operator: "+" } ] }); elements.push({ element: $group[i], resizable: true, size: size }); }); Ox.print("elements", elements) var $groupsPanel = new Ox.SplitPanel({ elements: elements, orientation: "horizontal" }), $list = new Ox.TextList({ columns: [ { align: "left", id: "id", operator: "+", title: "ID", unique: true, visible: true, width: 80 }, { align: "left", id: "title", operator: "+", title: "Title", visible: true, width: 160 }, { align: "left", id: "director", operator: "+", title: "Director", visible: true, width: 160 }, { align: "left", id: "country", operator: "+", title: "Country", visible: true, width: 120 }, { align: "right", id: "year", operator: "-", title: "Year", visible: true, width: 60 }, { align: "right", id: "runtime", operator: "-", title: "Runtime", visible: true, width: 80 }, { align: "left", id: "language", operator: "+", title: "Language", visible: true, width: 120 }, { align: "left", id: "genre", operator: "+", title: "Genre", visible: true, width: 120 }, { align: "right", id: "rating", operator: "-", title: "Rating", width: 80 }, { align: "right", id: "votes", operator: "-", title: "Votes", width: 80 } ], id: "list", request: function(options) { app.request("find", $.extend(options, { query: { conditions: [ { key: "director", value: "", operator: "" } ], operator: "" } }), options.callback); }, sort: [ { key: "director", operator: "+" } ] }), $toolBar = Ox.Bar({ size: 24 }), $button = Ox.Button({ id: "groupsButton", value: ["Show Groups", "Hide Groups"] }).css({ float: "left", margin: "4px" }).width(80).appendTo($toolBar), $select = Ox.Select({ id: "viewSelect", items: [ { checked: true, id: "list", title: "View as List" }, { id: "icons", title: "View as Icons" }, { id: "clips", title: "View with Clips" }, { id: "timelines", title: "View with Timelines" }, { id: "timelines", title: "View with Maps" }, { id: "timelines", title: "View with Calendars" }, { id: "timelines", title: "View as Clips" }, { id: "timelines", title: "View on Map" }, { id: "timelines", title: "View on Calendar" }, ] }).css({ float: "left", margin: "4px" }).width(120).appendTo($toolBar); $input = new Ox.Input({ autocomplete: { "Find: All": [], "Find: Title": [ "A bout de souffle", "Casino", "Diaries, Notes and Sketches", "L'age d'or", "Far From Heaven", "In girum imus nocte et consumimur igni", "It Felt Like a Kiss", "Mulholland Dr.", "Querelle", "Vertigo" ], "Find: Director": [ "Luis Buñuel", "Adam Curtis", "Guy Debord", "Rainer Werner Fassbinder", "Jean-Luc Godard", "Todd Haynes", "Alfred Hitchcock", "David Lynch", "Jonas Mekas", "Martin Scorsese" ], "Find: Country": [ "Austria", "Canada", "France", "Germany", "Italy", "Japan", "Spain", "Switzerland", "UK", "USA" ], "Find: Cinematographer": [] }, clear: true, highlight: false, id: "find", label: [ "Find: All", "Find: Title", "Find: Director", "Find: Country", "Find: Year", "Find: Language", "Find: Genre", "Find: Writer", "Find: Producer", "Find: Cinematographer", "Find: Editor", "Find: Actor", "Find: Character", "Find: Name", "Find: Keyword", "Find: Summary", "Find: Dialog", ], labelWidth: 85 }).css({ float: "right", margin: "4px" }).width(300).appendTo($toolBar); $contentPanel = new Ox.SplitPanel({ elements: [ { element: $groupsPanel, size: 128 }, { element: $list } ], orientation: "vertical" }), $statusBar = new Ox.Bar({ size: 16 }).attr({ id: "statusBar" }), $totals = new Ox.Element().attr({ id: "totals" }).appendTo($statusBar); $leftPanel = new Ox.Container(), $rightPanel = new Ox.SplitPanel({ elements: [ { element: $toolBar, size: 24 }, { element: $contentPanel }, { element: $statusBar, size: 16 } ], orientation: "vertical" }), $mainMenu = new Ox.MainMenu({ menus: [ { id: "demo", title: "Demo", items: [ { id: "about", title: "About" } ] }, { id: "sort", title: "Sort", items: [ { id: "sort_movies", title: "Sort Movies by", items: [ { checked: false, group: "sort_movies", id: "title", title: "Title"}, { checked: false, group: "sort_movies", id: "director", title: "Director" }, { checked: false, group: "sort_movies", id: "country", title: "Country" }, { checked: true, group: "sort_movies", id: "year", title: "Year" }, { checked: false, group: "sort_movies", id: "runtime", title: "Runtime" }, { checked: false, group: "sort_movies", id: "language", title: "Language" }, { checked: false, group: "sort_movies", id: "genre", title: "Genre" }, ] }, { id: "order_movies", title: "Order Movies", items: [ { checked: false, group: "order_movies", id: "ascending", title: "Ascending"}, { checked: true, group: "order_movies", id: "descending", title: "Descending" }, ] } ] }, ], size: "medium" }), $mainPanel = new Ox.SplitPanel({ elements: [ { element: $leftPanel, size: 256 }, { element: $rightPanel } ] }), $appPanel = Ox.SplitPanel({ elements: [ { element: $mainMenu, size: 20 }, { element: $mainPanel } ], orientation: "vertical" }).appendTo($body); $.each(groups, function(i, group) { Ox.Event.bind(null, "select_group_" + group.id, function(event, data) { $list.options({ request: function(options) { return app.request("find", $.extend(options, { query: { conditions: $.map(data.ids, function(v, j) { return { key: group.id, value: v, operator: "=" } }), operator: "|" } }), options.callback); } }); $.each(groups, function(i_, group_) { if (i_ != i) { $group[i_].options({ request: function(options) { delete options.keys; return app.request("find", $.extend(options, { group: group_.id, query: { conditions: $.map(data.ids, function(v, j) { return { key: group.id, value: v, operator: "=" } }), operator: "|" } }), options.callback); } }) } }); }); }); Ox.Event.bind(null, "change_sort_movies", function(event, data) { }); Ox.Event.bind(null, "load_list", function(event, data) { Ox.print("data", data) var html = [ data.items + " movie" + (data.items != 1 ? "s" : ""), Ox.formatDuration(data.runtime, "long"), Ox.formatDuration(data.runtime, "medium"), Ox.formatDuration(data.runtime, 3, "short"), data.files + " file" + (data.files != 1 ? "s" : ""), Ox.formatDuration(data.duration, "short"), Ox.formatValue(data.size, "B"), Ox.formatValue(data.pixels, "px") ]; $totals.html(html.join(", ")); }); Ox.Event.bind(null, "sort_list", function(event, data) { }); });