--color-gray: #edecec; | --color-gray: #edecec; | ||||
--color-blue: #4f1dff; | --color-blue: #4f1dff; | ||||
--color-pink: #cc285f; | --color-pink: #cc285f; | ||||
--title-font: "MetaAccanthis"; /* Cmunobi */ | |||||
--title-font: "Compagnon-T"; /* Cmunobi */ | |||||
--body-font: "Compagnon"; | --body-font: "Compagnon"; | ||||
/*@media screen and (min-width: 320px)*/ | /*@media screen and (min-width: 320px)*/ | ||||
h1, .h1 { | h1, .h1 { | ||||
font-family: var(--title-font) !important; | font-family: var(--title-font) !important; | ||||
font-size: var(--title-fontsize) !important; | font-size: var(--title-fontsize) !important; | ||||
-webkit-text-stroke-width: 0.01rem; | |||||
-webkit-text-stroke-width: 0.09rem; | |||||
-webkit-text-stroke-color: black; | -webkit-text-stroke-color: black; | ||||
font-style: italic; | |||||
letter-spacing: -0.15rem; | |||||
} | } | ||||
a.h1 { | a.h1 { | ||||
color: var(--color-lightyellow) !important; | color: var(--color-lightyellow) !important; | ||||
} | } | ||||
/* overwrite */ | |||||
.p-5 { | |||||
padding: 3.5rem !important; | |||||
} | |||||
/* INDEX */ | /* INDEX */ | ||||
.border, .border-dark { | .border, .border-dark { | ||||
box-shadow: 0.25rem 0.25rem 0.5rem var(--color-dark) !important; | box-shadow: 0.25rem 0.25rem 0.5rem var(--color-dark) !important; | ||||
} | } | ||||
button#notes, .action { | |||||
margin: 1rem 2rem; | |||||
.arrow-back { | |||||
position: fixed; | |||||
left: 0; | |||||
margin: 0.5rem; | |||||
} | |||||
.action { | |||||
margin: 1.5rem 3rem; | |||||
z-index: 999; | z-index: 999; | ||||
position: fixed; | position: fixed; | ||||
top: 0; | top: 0; | ||||
border: none; | border: none; | ||||
} | } | ||||
button#notes:hover { | |||||
.action button:hover { | |||||
color: var(--color-dark) !important; | |||||
} | |||||
#random-img-page .action button:hover { | |||||
color: var(--color-whitish) !important; | |||||
} | |||||
button#notes, button#notes-operations{ | |||||
position: fixed; | |||||
top: 0; | |||||
right:0; | |||||
margin: 0.25rem 0.75rem; | |||||
color: var(--color-whitish) !important; | |||||
background: var(--color-pink) !important; | |||||
border: 0.1rem solid var(--color-pink) !important; | |||||
border-radius: 5rem 3rem; | |||||
height: 2rem; | |||||
width: 2rem; | |||||
line-height: 0.1rem; | |||||
} | |||||
button#notes:hover, button#notes-operations:hover { | |||||
color: var(--color-dark) !important; | color: var(--color-dark) !important; | ||||
} | } | ||||
font-size: var(--body-fontsize-s); | font-size: var(--body-fontsize-s); | ||||
margin: 0.5rem 1rem; | margin: 0.5rem 1rem; | ||||
} | } | ||||
.operations { | |||||
font-size: var(--body-fontsize-s); | |||||
} | |||||
.w-6 { | .w-6 { | ||||
max-width: 75%; | max-width: 75%; | ||||
@media screen and (min-width:0px) and (max-width: 768px) { | @media screen and (min-width:0px) and (max-width: 768px) { | ||||
/* overwrite */ | |||||
.p-5 { | |||||
padding: 0.5rem !important; | |||||
} | |||||
/* INDEX SEARCH */ | /* INDEX SEARCH */ | ||||
input#inputsearch { | input#inputsearch { | ||||
width: 250px;; | width: 250px;; | ||||
} | } | ||||
/* RANDOM TITLES */ | |||||
.action button { | |||||
font-size: 1rem; | |||||
} | |||||
/* RANDOM IMAGES */ | /* RANDOM IMAGES */ | ||||
#random-img-page .img-fluid:hover { | #random-img-page .img-fluid:hover { | ||||
transform: none; | transform: none; |
<div class="action"> | <div class="action"> | ||||
<button onClick="refresh(this)" type="button" value="Refresh" title="new iteration">↻</button> | <button onClick="refresh(this)" type="button" value="Refresh" title="new iteration">↻</button> | ||||
<span class="info" style="display: none;"> | |||||
<span class="operations">↝ add a random title from dataset;</span> | |||||
</span> | |||||
<button id="notes-operations" onclick="hideShowInfo()">?</button> | |||||
</div> | </div> | ||||
<div id="rdn-abstracts"> | <div id="rdn-abstracts"> | ||||
<div class="row"> | <div class="row"> | ||||
<div class="col m-5"> | <div class="col m-5"> | ||||
<p class="h1 text-center">Reading Fragments</p> | |||||
<!-- The following total reading time is based on the calculation of approx. 43,647,513 words in all the documents divided by 200 as the average reading speed of 200 wpm --> | |||||
<p class="mt-2 text-center">a <span id="time"></span> minute read out of 218238 minutes reading time</p> | |||||
<a href="{{ url_for('main.index') }}" class="h1 text-left"> ⇽ </a> | |||||
<p class="h1 text-center">a Handful of Fragments</p> | |||||
<span class="info mt-2 text-center" style="display: none;"> | |||||
<!-- The following total reading time is based on the calculation of approx. 43,647,513 words in all the documents divided by 200 as the average reading speed of 200 wpm --> | |||||
<p class="operations">↪ a <span id="time"></span> minute read out of 218238 minutes reading time</p> | |||||
</span> | |||||
<a href="{{ url_for('main.index') }}" class="arrow-back h1 text-left" title="back to index"> ⇽ </a> | |||||
</div> | </div> | ||||
</div> | </div> | ||||
<div class="action"> | <div class="action"> | ||||
<button onClick="refresh(this)" type="button" value="Refresh" title="new iteration">↻</button> | <button onClick="refresh(this)" type="button" value="Refresh" title="new iteration">↻</button> | ||||
<span class="info" style="display: none;"> | |||||
<span class="operations">↝ new display of random records from the dataset;</span> | |||||
</span> | |||||
<button id="notes-operations" onclick="hideShowInfo()">?</button> | |||||
<a href="{{ url_for('main.index') }}" class="arrow-back h1 text-left" title="back to index"> ⇽ </a> | |||||
</div> | </div> | ||||
<a href="{{ url_for('main.index') }}" class="h1 text-left"> ⇽ </a> | |||||
<div class="compare mt-5"> | <div class="compare mt-5"> | ||||
{% for result in results %} | {% for result in results %} | ||||
<div class="mt-5 text-center skewY"> | <div class="mt-5 text-center skewY"> | ||||
{% if result['title'] is defined %} | {% if result['title'] is defined %} | ||||
<p class="h1 mb-2"> | |||||
<h1 class="h1 mt-4 mb-2"> | |||||
Title: | Title: | ||||
{{ result['title'] }} | {{ result['title'] }} | ||||
</p> | |||||
</h1> | |||||
{% endif %} | {% endif %} | ||||
{% if result['year'] is defined %} | {% if result['year'] is defined %} |
{% block content %} | {% block content %} | ||||
<a href="{{ url_for('main.index') }}" class="h1 text-left"> ⇽ </a> | |||||
<a href="{{ url_for('main.index') }}" class="h1 text-left" title="back to index"> ⇽ </a> | |||||
There are a total of {{ total_number }} patents. | |||||
<h1 class="h1 text-center"> There are a total of {{ total_number }} patents.</h1> | |||||
<div class="anchordata"> | |||||
<a href="#time">temporal focus</a> | |||||
<br> | |||||
<a href="#geo">geographic focus</a> | |||||
</div> | |||||
<br><br> | <br><br> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
<div id="time"> | |||||
<canvas id="chartOfYearFrequency" width="600" height="300"></canvas> | <canvas id="chartOfYearFrequency" width="600" height="300"></canvas> | ||||
</div> | |||||
<div id="geo"> | |||||
<canvas id="chartOfCountryFrequency" width="600" height="300"></canvas> | <canvas id="chartOfCountryFrequency" width="600" height="300"></canvas> | ||||
</div> | |||||
<script type="text/javascript"> | <script type="text/javascript"> | ||||
// retrieve variables passed from Python | // retrieve variables passed from Python | ||||
display: true, | display: true, | ||||
text: 'number of patent records for each year' | text: 'number of patent records for each year' | ||||
}, | }, | ||||
animation: { | |||||
onComplete: () => { | |||||
delayed = true; | |||||
}, | |||||
delay: (context) => { | |||||
let delay = 0; | |||||
if (context.type === 'data' && context.mode === 'default' && !delayed) { | |||||
delay = context.dataIndex * 1000 + context.datasetIndex * 100; | |||||
} | |||||
return delay; | |||||
}, | |||||
}, | |||||
}, | }, | ||||
responsive: true, | responsive: true, | ||||
scales: { | scales: { | ||||
} | } | ||||
} | } | ||||
}; | }; | ||||
Chart.defaults.font.family = 'Compagnon' | Chart.defaults.font.family = 'Compagnon' | ||||
var yearGraph = new Chart( | var yearGraph = new Chart( | ||||
document.getElementById('chartOfYearFrequency'), | document.getElementById('chartOfYearFrequency'), | ||||
config | config | ||||
); | ); | ||||
</script> | </script> | ||||
<script type="text/javascript"> | <script type="text/javascript"> |
{% block content %} | {% block content %} | ||||
<div class="action"> | |||||
<button onClick="refresh(this)" type="button" value="Refresh" title="new iteration">↻</button> | |||||
<!--<button onclick="" title="add one">+</button>--> | |||||
<button onclick="removeRandomImage()" title="remove">-</button> | |||||
</div> | |||||
<div class="action"> | |||||
<button onClick="refresh(this)" type="button" value="Refresh" title="new iteration">↻</button> | |||||
<span class="info" style="display: none;"> | |||||
<span class="operations">↝ new display of random images from dataset;</span> | |||||
</span> | |||||
<button onclick="" title="add one">+</button> | |||||
<span class="info" style="display: none;"> | |||||
<span class="operations">↝ add a random image from dataset;</span> | |||||
</span> | |||||
<button onclick="removeRandomImage()" title="remove one">-</button> | |||||
<span class="info" style="display: none;"> | |||||
<span class="operations">↝ remove a random image from page;</span> | |||||
</span> | |||||
<button id="notes-operations" onclick="hideShowInfo()">?</button> | |||||
<a href="{{ url_for('main.index') }}" class="arrow-back h1 text-left contrast" style="color: var(--color-lightyellow) !important;" title="back to index"> ⇽ </a> | |||||
</div> | |||||
<a href="{{ url_for('main.index') }}" class="h1 text-left contrast" style="color: var(--color-lightyellow) !important;"> ⇽ </a> | |||||
<div class="row"> | <div class="row"> | ||||
<div class="col m-5"> | <div class="col m-5"> | ||||
<p class="h1 text-center contrast">Layering of Images</p> | |||||
<p class="h1 text-center contrast">a Scattering of Images</p> | |||||
</div> | </div> | ||||
</div> | </div> | ||||
{% block content %} | {% block content %} | ||||
<div class="action"> | <div class="action"> | ||||
<button id="notes" onclick="hideShowInfo()">ⓘ</button> | |||||
<button id="notes" onclick="hideShowInfo()">?</button> | |||||
<!-- 👁 ⓘ ⅈ ✍ ⁐ --> | |||||
</div> | </div> | ||||
<div class="index-row button-search random-interferences"> | <div class="index-row button-search random-interferences"> | ||||
</div> | </div> | ||||
<div class="info note-interference" style="display: none;"> | <div class="info note-interference" style="display: none;"> | ||||
<p class="code"> // Interferences: Search interferences perform data otherwise. They disrupt ordering and invite unexpected readings.</p> | |||||
<p class="code"> ↪ Interferences: Search interferences perform data otherwise. They disrupt ordering and invite unexpected readings.</p> | |||||
</div> | </div> | ||||
<div class="index-row"> | <div class="index-row"> | ||||
<div class="info" style="display: none;"> | <div class="info" style="display: none;"> | ||||
<p class="code"> | <p class="code"> | ||||
// Main search engine sorting code: | |||||
↪ Main search engine sorting code: | |||||
solrurl = 'http://' + solr_hostname + ':' + solr_port + '/solr/' + core + '/select?q.op=OR&q=content%3A' + urllib.parse.quote_plus(search) + '&wt=json&sort=' + sort; request = requests.get(solrurl); json = request.json() | solrurl = 'http://' + solr_hostname + ':' + solr_port + '/solr/' + core + '/select?q.op=OR&q=content%3A' + urllib.parse.quote_plus(search) + '&wt=json&sort=' + sort; request = requests.get(solrurl); json = request.json() | ||||
</p> | </p> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
<div class="col text-center p-2"> | <div class="col text-center p-2"> | ||||
<!-- timeline of search term --> | |||||
<a href="{{ url_for('random.two_random_records') }}">a timeline of inventions</a> | |||||
<!-- data page --> | |||||
<a href="{{ url_for('data.main_data') }}">mapping the archive</a> | |||||
</div> | </div> | ||||
</div> | </div> | ||||
<div class="index-row justify-content-center mt-5"> | <div class="index-row justify-content-center mt-5"> | ||||
<div class="col text-center button-search button-hidden-off p-2"> | <div class="col text-center button-search button-hidden-off p-2"> | ||||
<a href="">Hidden in plain sight</a> | |||||
<a href="">hidden in plain sight</a> | |||||
<div class="info" style="display: none;"> | <div class="info" style="display: none;"> | ||||
<p class="code">// Searching for a history of women’s clothing inventors, that is in the archive, but hidden in plain sight.... </p> | |||||
<p class="code"> ↪ Searching for a history of women’s clothing inventors, that is in the archive, but hidden in plain sight.... </p> | |||||
</div> | </div> | ||||
</div> | </div> | ||||
<div class="col text-center button-search button-hidden-off p-2"> | <div class="col text-center button-search button-hidden-off p-2"> | ||||
<a href="{{ url_for('main.contents') }}">Search as a book</a> | |||||
<a href="{{ url_for('main.contents') }}">search as a book</a> | |||||
<div class="info" style="display: none;"> | <div class="info" style="display: none;"> | ||||
<p class="code">// Find here a table of contents for this digital archive... </p> | |||||
<p class="code"> ↪ Find here a table of contents for this digital archive... </p> | |||||
</div> | </div> | ||||
</div> | </div> | ||||
<div class="col text-center button-search button-hidden-off p-2"> | <div class="col text-center button-search button-hidden-off p-2"> | ||||
<a href="">Off the record</a> | |||||
<a href="">off the record</a> | |||||
<div class="info" style="display: none;"> | <div class="info" style="display: none;"> | ||||
<p class="code">// Some things are all over the patent archive but never made explicit. Off the record presents three artistic works that render these absent-present realities visible... </p> | |||||
<p class="code"> ↪ Some things are all over the patent archive but never made explicit. Off the record presents three artistic works that render these absent-present realities visible... </p> | |||||
</div> | </div> | ||||
</div> | </div> | ||||
</div> | </div> |
<div class="action"> | <div class="action"> | ||||
<button onClick="refresh(this)" type="button" value="Refresh" title="new iteration">↻</button> | <button onClick="refresh(this)" type="button" value="Refresh" title="new iteration">↻</button> | ||||
<span class="info" style="display: none;"> | |||||
<span class="operations">↝ new display of a random record from the dataset;</span> | |||||
</span> | |||||
<button id="notes-operations" onclick="hideShowInfo()">?</button> | |||||
<a href="{{ url_for('main.index') }}" class="arrow-back h1 text-left" title="back to index"> ⇽ </a> | |||||
</div> | </div> | ||||
<a href="{{ url_for('main.index') }}" class="h1 text-left"> ⇽ </a> | |||||
{% for result in results %} | {% for result in results %} | ||||
<div class="col text-center mt-2" id="result"> | <div class="col text-center mt-2" id="result"> | ||||
{% if result['title'] is defined %} | {% if result['title'] is defined %} | ||||
<p class="h1 mb-2"> | |||||
<h1 class="h1 mt-5 mb-2 p-5"> | |||||
Title: | Title: | ||||
{{ result['title'] }} | {{ result['title'] }} | ||||
</p> | |||||
</h1> | |||||
{% endif %} | {% endif %} | ||||
{% if result['year'] is defined %} | {% if result['year'] is defined %} |
<div class="action"> | <div class="action"> | ||||
<button onClick="refresh(this)" type="button" value="Refresh" title="new iteration">↻</button> | <button onClick="refresh(this)" type="button" value="Refresh" title="new iteration">↻</button> | ||||
<span class="info" style="display: none;"> | |||||
<span class="operations">↝ new display of random titles from dataset;</span> | |||||
</span> | |||||
<button onclick="addRandomTitle()" title="add one">+</button> | <button onclick="addRandomTitle()" title="add one">+</button> | ||||
<span class="info" style="display: none;"> | |||||
<span class="operations">↝ add a random title from dataset;</span> | |||||
</span> | |||||
<button onclick="removeRandomTitle()" title="remove one">-</button> | <button onclick="removeRandomTitle()" title="remove one">-</button> | ||||
<span class="info" style="display: none;"> | |||||
<span class="operations">↝ remove a random title from page;</span> | |||||
</span> | |||||
<button id="notes-operations" onclick="hideShowInfo()">?</button> | |||||
<a href="{{ url_for('main.index') }}" class="arrow-back h1 text-left" title="back to index"> ⇽ </a> | |||||
</div> | </div> | ||||
<div class="row"> | <div class="row"> | ||||
<div class="col m-5"> | <div class="col m-5"> | ||||
<a href="{{ url_for('main.index') }}" class="h1 text-left"> ⇽ </a> | |||||
<p class="h1 text-center">Poetics of Titles</p> | <p class="h1 text-center">Poetics of Titles</p> | ||||
</div> | </div> | ||||
</div> | </div> |
# Table of Contents | |||||
<div class="action"> | |||||
<button id="notes-operations" onclick="hideShowInfo()">?</button> | |||||
<a href="/" class="arrow-back h1 text-left" title="back to index"> ⇽ </a> | |||||
</div> | |||||
This website is the home of “Performing Patterns Otherwise.” It is an archive, a website and an experimental electronic book that binds search, archive and writing in one publication. The landing page navigates the publication according to the conventions of a search engine, foregrounding search. The table of content offers a way of navigating that foregrounds texts, which is more in line with the conventions of book making. The table of content reveals a logic of zooming in, from the general search to more specific configurations of the relationships between search, content, ordering and sense-making. | |||||
<h1 class="mt-5"> Table of Content</h1> | |||||
<span class="info" style="display: none;"> | |||||
<span class="code">↪ This website is the home of “Performing Patterns Otherwise.” It is an archive, a website and an experimental electronic book that binds search, archive and writing in one publication. The landing page navigates the publication according to the conventions of a search engine, foregrounding search. The table of content offers a way of navigating that foregrounds texts, which is more in line with the conventions of book making. The table of content reveals a logic of zooming in, from the general search to more specific configurations of the relationships between search, content, ordering and sense-making.</span> | |||||
</span> | |||||
[Frontmatter](link "frontmatter") | |||||
<br/> | |||||
### Frontmatter | |||||
<span class="info" style="display: none;"> | |||||
<span class="code">↪ add intro text to frontmatter here...</span> | |||||
</span> | |||||
- [Publisher: Mattering Press](frontmatter/#publisher "links to frontmatter section publisher") | - [Publisher: Mattering Press](frontmatter/#publisher "links to frontmatter section publisher") | ||||
- [Copyright](frontmatter/#copyright "links to frontmatter section copyright") | - [Copyright](frontmatter/#copyright "links to frontmatter section copyright") | ||||
- [Partners](frontmatter/#partner "links to frontmatter section partners") | - [Partners](frontmatter/#partner "links to frontmatter section partners") | ||||
- [Contributors](frontmatter/#contributor "links to frontmatter section contributors") | - [Contributors](frontmatter/#contributor "links to frontmatter section contributors") | ||||
[Foreword](foreword "links to foreword") | |||||
### Foreword | |||||
<span class="info" style="display: none;"> | |||||
<span class="code">↪ add intro text to foreword here...</span> | |||||
</span> | |||||
### Section 1: Searching the archive | |||||
<span class="info" style="display: none;"> | |||||
<span class="code">↪ Main search via keywords...</span> | |||||
</span> | |||||
[Section 1: Searching the archive](index.html "links to landingpage") | |||||
### Section 2: Search Interventions | |||||
<span class="info" style="display: none;"> | |||||
<span class="code">↪ Interventions are a mode of search, they disrupt ordering and invite unexpected readings....</span> | |||||
</span> | |||||
[Section 2: Search Interventions](interventions "links to interventions page") | |||||
- [A poetics of titles](interventions/#titles "links to interventions section poetics of titles") | - [A poetics of titles](interventions/#titles "links to interventions section poetics of titles") | ||||
- [A handful of fragments](interventions/#fragments "links to interventions section handful of fragments") | - [A handful of fragments](interventions/#fragments "links to interventions section handful of fragments") | ||||
- [A scattering of images](interventions/#scattering "links to interventions section scattering of images") | - [A scattering of images](interventions/#scattering "links to interventions section scattering of images") | ||||
- [A timeline of inverntions](interventions/#timeline "links to interventions section timeline of inverntions) | - [A timeline of inverntions](interventions/#timeline "links to interventions section timeline of inverntions) | ||||
[Section 3: Hidden in plain sight](hidden "links to hidden page") | |||||
### Section 3: Hidden in plain sight | |||||
<span class="info" style="display: none;"> | |||||
<span class="code">↪ Searching for a history of women’s clothing inventors, that is in the archive, but hidden in plain sight....</span> | |||||
</span> | |||||
- [Expanding citizens](hidden/#expanding "links to hidden section expanding citizens") | - [Expanding citizens](hidden/#expanding "links to hidden section expanding citizens") | ||||
- [Secret citizens](hidden/#secret "links to hidden section secret") | - [Secret citizens](hidden/#secret "links to hidden section secret") | ||||
- [Pissing & leaking citizens](hidden/#pissing "links to hidden section pissing & leaking citizens") | - [Pissing & leaking citizens](hidden/#pissing "links to hidden section pissing & leaking citizens") | ||||
- [Self-defending citizens](hidden/#self-defending "links to hidden section self-defending citizens") | - [Self-defending citizens](hidden/#self-defending "links to hidden section self-defending citizens") | ||||
- [Surviving citizens](hidden/#surviving "links to hidden section surviving citizens") | - [Surviving citizens](hidden/#surviving "links to hidden section surviving citizens") | ||||
[Section 4: Off the record](offrecord "links to off the record page") | |||||
### Section 4: Off the record | |||||
<span class="info" style="display: none;"> | |||||
<span class="code">↪ Some things are all over the patent archive but never made explicit. Off the record presents three artistic works that render these absent-present realities visible...</span> | |||||
</span> | |||||
- [Sewing labour](offrecord/#sewinglabour "links to off section sewing labour") | - [Sewing labour](offrecord/#sewinglabour "links to off section sewing labour") | ||||
- [Performing gender](offrecord/#performinggender "links to off section performing gender") | - [Performing gender](offrecord/#performinggender "links to off section performing gender") | ||||
- [Colonial traces](offrecord/#colonialtraces "links to off section colonial traces") | - [Colonial traces](offrecord/#colonialtraces "links to off section colonial traces") | ||||
[Section 5: Making of](making "links to off the making of page") | |||||
### Section 5: Making of | |||||
<span class="info" style="display: none;"> | |||||
<span class="code">↪ A series of essays from the makers on the research, methods, tools developed...</span> | |||||
</span> | |||||
- [On making search-engine book](making/#search-engine-book "links to making section making search-engine book") | - [On making search-engine book](making/#search-engine-book "links to making section making search-engine book") | ||||
- [On interface design](making/#interface "links to making section interface design") | - [On interface design](making/#interface "links to making section interface design") |